iT邦幫忙

2025 iThome 鐵人賽

DAY 18
0
Mobile Development

Xcode x Swift Vibe coding進階開發之旅系列 第 18

Xcode x Swift Vibe coding進階開發之旅 第十八天 點名系統(11) 增加活動狀態功能

  • 分享至 

  • xImage
  •  

指令

增加一個欄位已記錄人員是否還繼續活動 沒有活動則不會顯示在簽到頁面 可以在list特過左滑編輯狀態

/images/emoticon/emoticon13.gif

回答

https://ithelp.ithome.com.tw/upload/images/20251002/20168187YUtIUSbD5u.png

程式

 private func loadUsers() {
        let realm = try! Realm()
        users = realm.objects(User.self).filter("active == true").sorted(byKeyPath: "createdAt", ascending: false)
        tbvselect.reloadData()
    }
  // 定義左滑操作
    func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
        switch currentDisplayMode {
        case .users:
            // 獲取選中的使用者
            guard let user = users?[indexPath.row] else { return nil }
            
            // 創建刪除操作
            let deleteAction = UIContextualAction(style: .destructive, title: "刪除") { [weak self] (_, _, completionHandler) in
                self?.deleteUser(at: indexPath)
                completionHandler(true)
            }
            deleteAction.backgroundColor = .systemRed
            
            // 創建編輯活動狀態的操作
            let toggleActiveTitle = user.active ? "停用" : "啟用"
            let toggleActiveAction = UIContextualAction(style: .normal, title: toggleActiveTitle) { [weak self] (_, _, completionHandler) in
                self?.toggleUserActiveStatus(user)
                completionHandler(true)
            }
            toggleActiveAction.backgroundColor = user.active ? .systemOrange : .systemGreen
            
            // 創建操作配置
            let configuration = UISwipeActionsConfiguration(actions: [deleteAction, toggleActiveAction])
            configuration.performsFirstActionWithFullSwipe = false
            return configuration
            
        case .checkInRecords:
            // 對簽到記錄只提供刪除操作
            let deleteAction = UIContextualAction(style: .destructive, title: "刪除") { [weak self] (_, _, completionHandler) in
                self?.deleteCheckInRecord(at: indexPath)
                completionHandler(true)
            }
            deleteAction.backgroundColor = .systemRed
            
            let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
            configuration.performsFirstActionWithFullSwipe = false
            return configuration
        }
    }
    
    // 切換用戶活動狀態
    private func toggleUserActiveStatus(_ user: User) {
        let realm = try! Realm()
        
        do {
            try realm.write {
                // 切換活動狀態
                user.active = !user.active
            }
            
            // 顯示成功訊息
            let statusMessage = user.active ? "已啟用" : "已停用"
            showSuccessAlert(message: "用戶 \(user.Name) \(statusMessage)")
            
            // 重新加載數據
            loadUsers()
        } catch {
            showErrorAlert(message: "更新狀態失敗:\(error.localizedDescription)")
        }
    }

/images/emoticon/emoticon07.gif


上一篇
Xcode x Swift Vibe coding進階開發之旅 第十七天 點名系統(10) 增加已簽到圖示
下一篇
Xcode x Swift Vibe coding進階開發之旅 第十九天 點名系統(12) 修正時間會停止問題
系列文
Xcode x Swift Vibe coding進階開發之旅22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言